from django.views import View
# 导入返回响应
from SaaSDevelTool.data_return_response import create_response
# 导入错误信息装饰器
from SaaSDevelTool.data_return_response import error_message_detection
# 导入分页
from SaaSDevelTool.data_mysql_data import db
# 查询当前参数是否是int类型
from SaaSDevelTool.data_operation import is_number
# 导入创建功能包操作
from SaaSDevelTool.SaaSCenterOperateFunc import create_tenement_package_func, query_package_tenement_list

"""
添加对应的功能包下的配置信息
"""


class SaaSDevelModelPackAgeSettingsCreate(View):
    @error_message_detection
    def post(self, request):
        # 获取功能包名称
        package_id = request.POST.get("package_id")
        # 获取对应的名称
        settings_name = request.POST.get("settings_name")
        # 获取对应的内容
        settings_value = request.POST.get("settings_value")
        # 判断功能包编号
        if not all([package_id, settings_name, settings_value]):
            # 返回对应的响应
            return create_response(code=400, msg="功能包编号，配置名称，配置内容为必传参数。")

        # 判断功能包编号格式
        if not is_number(package_id):
            # 返回对应响应
            return create_response(code=400, msg="功能包编号格式传递错误。")

        # 查询名称是否重复
        query_sum_package_settings_table_sql = """
            SELECT 
                settings_name 
            FROM 
                db_saas_center.sum_package_settings_table 
            WHERE 
                settings_name = '{}' 
            AND 
                package_id = {}
            ;""".format(settings_name, package_id)

        # 判断是否存在
        if db.findOne(query_sum_package_settings_table_sql):
            # 返回响应
            return create_response(
                code=400,
                msg="添加失败，配置名称【{}】已存在当前功能包下，请更换名称后重试。".format(
                    settings_name
                )
            )

        # 拼接对应的sql语句
        create_sum_package_settings_table_sql = """
            INSERT INTO 
                db_saas_center.sum_package_settings_table(
                    settings_name, 
                    settings_value, 
                    package_id
                )
            VALUES
                ('{}', '{}', {})
            ;""".format(settings_name, settings_value, package_id)

        # 执行对应的sql语句
        db.update(create_sum_package_settings_table_sql)

        # 调用方法查看开启当前功能包的租户
        tenement_list = query_package_tenement_list(package_id)
        # 循环对应的值
        for i in tenement_list:
            # 调用语句
            create_status = create_tenement_package_func(i['tenement_id'], package_id)
            # 判断语句
            if create_status['status'] == False:
                # 返回响应
                return create_response(code=400, msg=create_status['msg'])

        # 返回响应
        return create_response(code=200, msg="功能包配置新增成功。")
